<?php
class Login extends Application
{
	
	function __construct()
	{
		$this->permission=array();
		$this->loadModel('model_Utente');
	}

function View_index()
	{
		$this->loadView('view_header');
		$this->loadView('view_login');
	}

	function  login ($user, $password)
	{
	    $result=$this->model_Utente->login ($user, $password)->getRow();
		if($result!=array())
		{
			$session=sessionController::singleton();
			$session->UserName = $result[0][Username];
			$session->role = $result[0]['Nome'];
			$session->menu=$this->getXML(XML_PATH);
			$this->redirect('Index');
		}else 
			$this->loadView('view_login');
	}
	
	function getXML($path){
	//Path file XML
    $xml_path = $path;

    //Inizializza classe DOM
    $dom = new DOMDocument();
    
    //Non calcolare spazi vuoti nel documento
    $dom -> preserveWhiteSpace = false;
    
    //Carica il file XML
    $dom -> load($xml_path)
        or die("File XML non valido!");
	
    //Cerca il nodo radice del codice XML
    $root = $dom -> documentElement;
    
    $i=1;
    //Controllo se il nodo radice ha figli, in caso processo l'albero XML
	if($root -> hasChildNodes())
	{
    	$ruoli = $root -> childNodes;
    	//ricerco il ruolo
			foreach($ruoli as $ruolo)
			{ 
				if($ruolo -> hasAttributes())
				{
					//Cerca attributo nome del ruolo
					$nome_ruolo = $ruolo ->getAttribute('name');
					
						$session=sessionController::singleton();	
			//verifico se il ruolo esiste
			if($session->role==""){
		     	$session->role="Ospite";
			}
			if($nome_ruolo==$session->role)
			{		
					if($ruolo -> hasChildNodes())
					{
						
						$menu=array();
						$items = $ruolo -> childNodes;

    					//ricerca item
						foreach($items as $item)
						{
							
							if($item -> hasAttributes())
							{
								$nome_item = $item ->getAttribute('name');
								$this->permission[$nome_item];
								if($item -> hasAttribute('link'))
									{
										$nome_link = $item ->getAttribute('link');
										$nome_text = $item ->getAttribute('text');
										$sub_menu['text']=$nome_text;
										$sub_menu['class']=$nome_item;
										$sub_menu['link']=BASE_PATH.$nome_link;
										$sub_menu['show_condition']=TRUE;
										$sub_menu['parent']=0;
										$menu[$i]=$sub_menu;
									}
							}						
						
							if($item -> hasChildNodes())
							{
								
								$sub_items = $item -> childNodes;
								
    							//ricerca subitem
    							$j=$i;
								foreach($sub_items as $sub_item)
								{
									$metodo= $sub_item ->getAttribute('name');
									$this->permission[$nome_item][]=$metodo;
									//if($sub_item -> hasAttributes()){
									if($item -> hasAttribute('link')){
									if($sub_item -> hasAttribute('action'))
									{
										$azione= $sub_item ->getAttribute('action');
										$sub_menu['text']=$azione;
										$sub_menu['class']=$azione;
										$sub_menu['link']=BASE_PATH.$nome_item.'/'.$metodo;
										$sub_menu['show_condition']=TRUE;
										$sub_menu['parent']=$i;
										$j++;
										$menu[$j]=$sub_menu;
									}
									}

								//}
							}	
							}
							if($item -> hasAttribute('link')){
							$i=$j+1;
							}
						}
						$session->permission=$this->permission;
						
						return $menu;
					}
			}
	
				}

			}//end for ruoli
	
		}
	
	}
	
	function getPermission($ruolo){
		$permission=$this->model_Utente->getPermission($ruolo);
		
	}
	

}
?>